This disclosure generally relates to cloud computing, and, more particularly, to enabling infrastructure information technology services, including computing, storage, and networking services to be provisioned on demand and delivered over the Internet in a scalable manner.
Service providers and enterprises have traditionally relied on large local installations of commodity data center hardware, including computing, storage, and networking devices, to provide information technology services and applications to their users. The advent of computing services that enable applications to run in “the cloud,” or on remote data centers that provision computing, storage, and networking services to applications, has left many service providers and enterprises with a large inventory of unused commodity data center hardware.
A cloud infrastructure provides on-demand computing resources to a customer (whether an individual or an enterprise) of the cloud operator through virtualization. The customer typically is physically remote from the computing resource and is agnostic to the location of the physical resources that support the computing resources. In a virtualized cloud infrastructure, the computing resource generally comprises a virtual machine characterized by some amount of processor, memory, storage, networking capability or capacity. Virtualization allows the physical resources support a large number of computing resources, often well beyond the limited number of actual physical devices. Physical resources in the cloud infrastructure are shared amongst the different customers of the cloud infrastructure. Each customer gets the illusion of operating a physically distinct computing resource.
Traditional virtualization infrastructure is built on shared storage and shared Layer-2 (Data Link) networking. These requirements severely limit scalability of conventional cloud systems. In shared storage, the physical disks may be physically separate from the computing server. These disks are typically controlled by a dedicated computer known as a storage controller or storage server. The storage controller provides access to the physical server via network protocols such as NFS and iSCSI. The virtual machines therefore access their storage over the network, but in a transparent fashion such that their storage appears to be locally attached. Each storage server provides storage to multiple physical servers. The virtual machines access their virtual disks over the network via a hypervisor deployed on the physical servers hosting the virtual machines. The hypervisor is responsible for managing the virtual machines' access to the storage servers.
When the storage is networked in such a fashion, it may provide many advantages to the cloud operator. However, a typical infrastructure cloud is characterized by massive scale with hundreds or thousands of customers operating thousands of virtual machines simultaneously, with each customer getting the illusion of operating physically distinct computers. To support such scale, the operator needs to deploy hundreds of physical servers and the networking elements and storage to support these physical servers.
While advantageous as outlined above, commercially available storage servers are not the ideal solution. The storage servers may not scale sufficiently to support such deployments due to architectural limitations. They may be prohibitively expensive or represent more capital outlay than warranted by the initial anticipated demand for the service. They may present single points of failure or increased cost due to deployment of redundant elements. Insurmountable performance bottlenecks may be present, for example, due to the limits of networking speed. Expensive large centralized storage may require long-term technology and vendor lock-in detrimental to the competitiveness of the cloud operator.
The networking elements may provide a similar challenge in large scale cloud deployments. Typically the network between the physical servers is provided by switched Ethernet since it provides performance at optimal price points. However, interconnecting all physical servers using Layer-2 switching has a number of drawbacks.
First, each physical server uses broadcasts and multicasts to discover services and advertise services on the network. As the number of physical servers increases to accommodate a growing number of virtual machines, the amount of broadcast traffic scales accordingly. Broadcast traffic is detrimental to the performance of the network since each server is interrupted by every broadcast even if it is not relevant to the server. Commercially available network switches can often only support a few dozen physical ports—each physical server is connected to one or more ports. Switches can be linked together with high speed switches but at great expense and potentially lower reliability.
Additionally, previous virtualization technologies resorted to one of two approaches: physical host-based network virtualization using software drivers integrated in the hypervisor or physical network/VLAN-based network virtualization, either via port-based VLANs or IEEE 802.1q tagged Ethernet frames. The popular IEEE 802.1Q standard defines a 12-bit tag, which allows more than 4000 VLANs to be supported within a broadcast domain. But neither of these approaches by themselves are sufficient to build a scalable cloud infrastructure.